UIKit এ UITabBarController এবং UISplitViewController ব্যবহার করে আমরা iOS অ্যাপ্লিকেশনে একাধিক ভিউ কন্ট্রোলারকে সুসংগঠিত ও সুগঠিতভাবে উপস্থাপন করতে পারি। এই কন্ট্রোলারগুলো সাধারণত বড় অ্যাপ্লিকেশনগুলোতে ব্যবহৃত হয় যেখানে ব্যবহারকারীদের বিভিন্ন বিভাগ বা বৈশিষ্ট্যে দ্রুত নেভিগেট করতে হয়। নিচে প্রতিটি কন্ট্রোলার এবং তাদের ব্যবহারের পদ্ধতি বিস্তারিতভাবে ব্যাখ্যা করা হলো:
১. UITabBarController
UITabBarController হলো একটি কন্টেইনার ভিউ কন্ট্রোলার যা ট্যাব আকারে একাধিক ভিউ কন্ট্রোলারকে প্রদর্শন করে। এটি সাধারণত নেভিগেশন সহজ এবং সংগঠিত করার জন্য ব্যবহৃত হয়। উদাহরণস্বরূপ, সোশ্যাল মিডিয়া অ্যাপ বা ই-কমার্স অ্যাপ যেখানে হোম, সার্চ, প্রোফাইল, নোটিফিকেশন ইত্যাদি বিভাগ থাকে।
UITabBarController ব্যবহার করে অ্যাপ্লিকেশন তৈরি
নিচে একটি উদাহরণ দেওয়া হলো যেখানে দুইটি ভিউ কন্ট্রোলার একটি UITabBarController এর মধ্যে যুক্ত করা হচ্ছে।
import UIKit
class HomeViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .white
title = "Home"
tabBarItem = UITabBarItem(tabBarSystemItem: .favorites, tag: 0)
}
}
class SettingsViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .lightGray
title = "Settings"
tabBarItem = UITabBarItem(tabBarSystemItem: .more, tag: 1)
}
}
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
var window: UIWindow?
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
guard let windowScene = (scene as? UIWindowScene) else { return }
let window = UIWindow(windowScene: windowScene)
let homeVC = HomeViewController()
let settingsVC = SettingsViewController()
let tabBarController = UITabBarController()
tabBarController.viewControllers = [homeVC, settingsVC]
window.rootViewController = tabBarController
self.window = window
window.makeKeyAndVisible()
}
}
ব্যাখ্যা:
- HomeViewController এবং SettingsViewController: দুটি ভিউ কন্ট্রোলার তৈরি করা হয়েছে এবং তাদের জন্য ট্যাব আইটেম সেট করা হয়েছে (
tabBarSystemItemদিয়ে)। - UITabBarController: আমরা একটি
UITabBarControllerতৈরি করেছি এবং এরviewControllersপ্রোপার্টিতে দুইটি ভিউ কন্ট্রোলার অ্যাসাইন করেছি। - SceneDelegate: UITabBarController কে রুট ভিউ কন্ট্রোলার হিসেবে সেট করা হয়েছে।
২. UISplitViewController
UISplitViewController সাধারণত বড় স্ক্রিনের জন্য (যেমন: iPad) ব্যবহৃত হয় এবং এটি একটি মাস্টার-ডিটেইল (Master-Detail) ইন্টারফেস প্রদান করে। এটি এমন অ্যাপ্লিকেশনগুলোতে ব্যবহৃত হয় যেখানে ডিটেইল কন্টেন্ট প্রদর্শনের জন্য একটি নির্দিষ্ট সেকশন নির্বাচন করা হয়, যেমন: মেইল অ্যাপ।
UISplitViewController ব্যবহার করে অ্যাপ্লিকেশন তৈরি
নিচে একটি উদাহরণ দেওয়া হলো যেখানে একটি UISplitViewController ব্যবহার করে মাস্টার এবং ডিটেইল ভিউ কন্ট্রোলার সেটআপ করা হচ্ছে।
import UIKit
class MasterViewController: UITableViewController {
var items = ["Item 1", "Item 2", "Item 3"]
override func viewDidLoad() {
super.viewDidLoad()
title = "Master"
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return items.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell") ?? UITableViewCell(style: .default, reuseIdentifier: "Cell")
cell.textLabel?.text = items[indexPath.row]
return cell
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let detailVC = DetailViewController()
detailVC.itemText = items[indexPath.row]
showDetailViewController(detailVC, sender: self)
}
}
class DetailViewController: UIViewController {
var itemText: String?
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .white
title = "Detail"
let label = UILabel()
label.text = itemText
label.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(label)
NSLayoutConstraint.activate([
label.centerXAnchor.constraint(equalTo: view.centerXAnchor),
label.centerYAnchor.constraint(equalTo: view.centerYAnchor)
])
}
}
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
var window: UIWindow?
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
guard let windowScene = (scene as? UIWindowScene) else { return }
let window = UIWindow(windowScene: windowScene)
let masterVC = MasterViewController()
let masterNavVC = UINavigationController(rootViewController: masterVC)
let detailVC = DetailViewController()
let detailNavVC = UINavigationController(rootViewController: detailVC)
let splitVC = UISplitViewController(style: .doubleColumn)
splitVC.viewControllers = [masterNavVC, detailNavVC]
window.rootViewController = splitVC
self.window = window
window.makeKeyAndVisible()
}
}
ব্যাখ্যা:
- MasterViewController: একটি টেবিল ভিউ কন্ট্রোলার, যা একটি লিস্ট দেখায়। লিস্টের একটি আইটেম সিলেক্ট করলে এটি
DetailViewControllerএ নেভিগেট করে। - DetailViewController: ডিটেইল ভিউ কন্ট্রোলার, যা সিলেক্ট করা আইটেমের বিস্তারিত প্রদর্শন করে।
- UISplitViewController: আমরা
UISplitViewControllerতৈরি করে মাস্টার এবং ডিটেইল ভিউ কন্ট্রোলারকে এতে যুক্ত করেছি। এটি একটি doubleColumn স্টাইলের UISplitViewController ব্যবহার করছে, যা iPad এর মতো বড় স্ক্রিনে ভালোভাবে কাজ করে। - SceneDelegate: UISplitViewController কে রুট ভিউ কন্ট্রোলার হিসেবে সেট করা হয়েছে।
UITabBarController এবং UISplitViewController ব্যবহারের সেরা চর্চা
- UITabBarController ব্যবহার করুন: অ্যাপ্লিকেশনে একাধিক বিভাগ বা সেকশন থাকলে, যেগুলো স্বাধীনভাবে কাজ করে, সেগুলোকে সংগঠিত করতে UITabBarController ব্যবহার করুন।
- UISplitViewController ব্যবহার করুন: মাস্টার-ডিটেইল লেআউট প্রয়োজন হলে, বিশেষ করে বড় স্ক্রিনের জন্য (যেমন: iPad), UISplitViewController ব্যবহার করা উচিত।
- NavigationController এর সাথে সংযুক্ত করুন: Tab Bar এবং Split View এর ভিউ কন্ট্রোলারগুলোতে নেভিগেশন ব্যবহারের জন্য UINavigationController যুক্ত করুন।
- Adaptive Layout ব্যবহার করুন: UISplitViewController ব্যবহার করে লেআউটকে অ্যাডাপ্টিভ রাখুন যাতে এটি বড় এবং ছোট উভয় স্ক্রিনে সঠিকভাবে কাজ করে।
উপসংহার
UITabBarController এবং UISplitViewController ব্যবহার করে iOS অ্যাপ্লিকেশনে মাল্টি-ভিউ ইন্টারফেস তৈরি করা সহজ এবং কার্যকরী। UITabBarController একটি সরল এবং কার্যকর পদ্ধতি প্রয়োগ করে, যেখানে UISplitViewController বড় স্ক্রিনে মাস্টার-ডিটেইল লেআউট প্রদর্শন করার জন্য আদর্শ। এগুলো ব্যবহারের মাধ্যমে আপনার অ্যাপ্লিকেশনকে আরও সুগঠিত এবং ইন্টারেক্টিভ করে তোলা যায়।
Read more